/
TabVersionSettings.cs
96 lines (80 loc) · 3.62 KB
/
TabVersionSettings.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information
namespace DotNetNuke.Entities.Tabs.TabVersions
{
using System;
using System.Globalization;
using DotNetNuke.Common;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Framework;
public class TabVersionSettings : ServiceLocator<ITabVersionSettings, TabVersionSettings>, ITabVersionSettings
{
private const int TabVersionsMaxNumber = 5;
private const string TabVersionQueryStringParam = "DnnTabVersion";
private const string TabVersioningSettingKey = "TabVersioningSettingKey";
/// <inheritdoc/>
public int GetMaxNumberOfVersions(int portalId)
{
Requires.NotNegative("portalId", portalId);
return portalId == Null.NullInteger ? TabVersionsMaxNumber : PortalController.GetPortalSettingAsInteger("TabVersionsMaxNumber", portalId, TabVersionsMaxNumber);
}
/// <inheritdoc/>
public void SetMaxNumberOfVersions(int portalId, int maxNumberOfVersions)
{
Requires.NotNegative("portalId", portalId);
PortalController.UpdatePortalSetting(portalId, "TabVersionsMaxNumber", maxNumberOfVersions.ToString(CultureInfo.InvariantCulture));
}
/// <inheritdoc/>
public void SetEnabledVersioningForPortal(int portalId, bool enabled)
{
Requires.NotNegative("portalId", portalId);
PortalController.UpdatePortalSetting(portalId, "TabVersionsEnabled", enabled.ToString(CultureInfo.InvariantCulture));
}
/// <inheritdoc/>
public void SetEnabledVersioningForTab(int tabId, bool enabled)
{
Requires.NotNegative("tabId", tabId);
TabController.Instance.UpdateTabSetting(tabId, TabVersioningSettingKey, enabled.ToString(CultureInfo.InvariantCulture));
}
/// <inheritdoc/>
public bool IsVersioningEnabled(int portalId)
{
Requires.NotNegative("portalId", portalId);
return
Convert.ToBoolean(PortalController.GetPortalSetting("TabVersionsEnabled", portalId, bool.FalseString));
}
/// <inheritdoc/>
public bool IsVersioningEnabled(int portalId, int tabId)
{
Requires.NotNegative("portalId", portalId);
Requires.NotNegative("tabId", tabId);
if (!this.IsVersioningEnabled(portalId))
{
return false;
}
var tabInfo = TabController.Instance.GetTab(tabId, portalId);
var isHostOrAdminPage = TabController.Instance.IsHostOrAdminPage(tabInfo);
if (isHostOrAdminPage)
{
return false;
}
var settings = TabController.Instance.GetTabSettings(tabId);
var isVersioningEnableForTab = settings[TabVersioningSettingKey] == null
|| Convert.ToBoolean(settings[TabVersioningSettingKey]);
return isVersioningEnableForTab;
}
/// <inheritdoc/>
public string GetTabVersionQueryStringParameter(int portalId)
{
Requires.NotNegative("portalId", portalId);
return PortalController.GetPortalSetting("TabVersionQueryStringParameter", portalId, TabVersionQueryStringParam);
}
/// <inheritdoc/>
protected override Func<ITabVersionSettings> GetFactory()
{
return () => new TabVersionSettings();
}
}
}